//
//  TYAesEncipher.h
//  UnionMedApp
//
//  Created by 谢航宇 on 2023/6/25.
//  Copyright © 2023 唐家钦. All rights reserved.
//

#import <Foundation/Foundation.h>
#import <CommonCrypto/CommonCrypto.h>


NS_ASSUME_NONNULL_BEGIN
typedef enum {
    TYAesCryptorNoPadding = 0,    // 无填充
    TYAesCryptorPKCS7Padding = 1, // PKCS_7 | 每个字节填充字节序列的长度。 ***此填充模式使用系统方法。***
    TYAesCryptorZeroPadding = 2,  // 0x00 填充 | 每个字节填充 0x00
    TYAesCryptorANSIX923,         // 最后一个字节填充字节序列的长度，其余字节填充0x00。
    TYAesCryptorISO10126          // 最后一个字节填充字节序列的长度，其余字节填充随机数据。
}TYAesCryptorPadding;

typedef enum {
    TYAesKeySizeAES128          = 16,
    TYAesKeySizeAES192          = 24,
    TYAesKeySizeAES256          = 32,
}TYAesKeySizeAES;

typedef enum {
    TYAesModeECB        = 1,
    TYAesModeCBC        = 2,
    TYAesModeCFB        = 3,
    TYAesModeOFB        = 7,
}TYAesMode;


@interface TYAesEncipher : NSObject
+ (NSString *)encrypt:(NSString *)originalStr
                      mode:(TYAesMode)mode
                       key:(NSString *)key
                   keySize:(TYAesKeySizeAES)keySize
                        iv:(NSString * _Nullable )iv
                   padding:(TYAesCryptorPadding)padding;

+ (NSString *)decrypt:(NSString *)originalStr
                      mode:(TYAesMode)mode
                       key:(NSString *)key
                   keySize:(TYAesKeySizeAES)keySize
                        iv:(NSString * _Nullable )iv
                   padding:(TYAesCryptorPadding)padding;
@end




NS_ASSUME_NONNULL_END
